
import { reactive } from "vue"

//   校验用户名
export const validateusername = (rule, value, callback) => {
    // 3到16位（字母，数字，下划线，减号）
    let reg = /^[a-zA-Z0-9_-]{3,16}$/
    if (reg.test(value)) {
        callback()
    } else {
        callback(new Error("3到16位,字母,数字,下划线,减号"))
    }
}

//   校验密码
const validatepassword = (rule, value, callback) => {
    if (value) {
        callback()
    } else {
        callback("密码不能为空")
    }
}

//  校验验证码
const validatecaptcha = (rule, value, callback) => {
    if (value.length < 5) {
        callback("验证码长度小于5")
    } else {
        // let {username,password,captcha} = loginFrom.value
        callback()
    }
}


// 校验规则

// 常规用户名校验规则
export const commonRules = reactive({
    username: [{ validator: validateusername, trigger: 'blur' }],
    password: [{ validator: validatepassword, trigger: 'blur' }],
    captcha: [{ validator: validatecaptcha, trigger: 'blur' }],
})


// 添加短信登录的校验函数

// 1.添加校验手机号
export const validatePhone = (rule, value, callback) => {
    let reg = /^1(3\d|4[5-9]|5[0-35-9]|6[567]|7[0-8]|8\d|9[0-35-9])\d{8}$/
    if (reg.test(value)) {
        callback()
    } else {
        callback(new Error("手机号格式不正确"))
    }
}


// 2.添加校验验证码
export const validateCode = (rule, value, callback) => {
    if (value.length < 5) {
        callback(new Error("验证码错误"))
    } else {
        callback()
    }
}
// 短信登入校验规则
export const smsRules = reactive({
    phone: [{ validator: validatePhone, trigger: 'blur' }],
    code: [{ validator: validateCode, trigger: 'blur' }],
})


// 表单提交时
export const useSubmitForm = (successCallback, faildCallback) => (formEl) => {
    if (!formEl) return
    // 调用了组件提供的方法
    formEl.validate((valid) => {
        // 当所有表单通过 valid 为 true 否则为 false
        if (valid) {
            if (successCallback) {
                successCallback()
            }
            // console.log('submit!')
        } else {
            // console.log('error submit!')
            if (faildCallback) {
                faildCallback(false)
            }
            return false
        }
    })
}